昨天我們了解了 Nginx 的主要設定檔在做什麼,今天我們要來繼續談其他設定檔
sudo ln -s /etc/nginx/sites-available/test.conf /etc/nginx/sites-enabled/
因為 /etc/nginx/conf.d/ 較為常用的關係,今天主要針對伺服器設定的細節來做介紹
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index.html ;
}
error_page 404 /404.html;
location = /404.html {
root /var/www/html;
}
error_page 500 503 /50x.html;
location = /50x.html {
root /var/www/html;
}
}
在上面的設定檔中我們可以把每個大括號當成是一個區塊
它包含了一個網站或應用的基本配置信息,比如伺服器在哪個端口上監聽(listen)、接受的域名是什麼(server_name),還有它如何處理不同的路徑或錯誤的請求。
server {
listen 80;
server_name example.com;
location / {
root /var/www/html;
index.html ;
}
location /backend {
proxy_pass http://localhost:8080;
proxy_set_header Host $host; # 將原始請求的 Host header 傳遞給伺服器。$host 變數代表請求中的主機名稱(如 example.com)。
proxy_set_header X-Real-IP $remote_addr; # 將客戶端的 IP 地址傳遞給伺服器。$remote_addr 變數表示客戶端的 IP 地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 將請求的 X-Forwarded-For Header 設定為包含客戶端 IP 地址的列表,該列表包括經過的所有代理伺服器的 IP。
location /order{
proxy_pass http://localhost:7686;
}
}
upstream backend_servers {
server backend1.example.com; # 第一個後端伺服器
server backend2.example.com; # 第二個後端伺服器
server backend3.example.com; # 第三個後端伺服器
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend_servers;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
upstream 用於定義一組伺服器(在這裡是 backend1、backend2 和 backend3),這樣可以將來自 Nginx 的請求,平衡到這些伺服器上。
輪循(Round Robin):
靈活設定權重:
upstream backend_servers {
server backend1.example.com weight=3;
server backend2.example.com weight=2;
server backend3.example.com;
}
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend1.example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
server {
listen 80;
server_name test.com;
location / {
proxy_pass http://backend2.example.com;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
這就是我們前面所說,可以設定多個伺服器不同設定,如為 example.com 和 test.com 配置不同的根目錄導向不同的頁面。像在工作中就有透過這個方法,讓客戶用不同的網域名稱存取到不同的資源。
其實除了這幾個功能外,他還有很多細節可以設定,像是快取,但礙於篇章問題,只挑了幾個我比較常用的出來做介紹,若大家還有興趣,可以在多多深入!